#include <iostream>
#include <vector>
#include <string>
using namespace std;

class Node {
public:
    virtual ~Node() {}
    string code;
};

class NExpression : public Node {
};

class NStatement : public Node {
    public:
        string begin;
        string next;
        NStatement(string *n) : next(*n) {}
};

class NUnaryOperator : public NExpression {
    public:
	int op;
	NExpression& opr;
	NUnaryOperator(int op, NExpression& opr) :
		opr(opr){ }
};

class NBinaryOperator : public NExpression {
public:
	int op;
	NExpression& lhs;
	NExpression& rhs;
	NBinaryOperator(NExpression& lhs, int op, NExpression& rhs) :
		lhs(lhs), rhs(rhs), op(op) { }
};

class NBoolExpression : public NExpression {
    public:
        string t,f;
        NBoolExpression(string* tt, string* ff) : t(*tt), f(*ff) {delete tt; delete ff;}
};